package com.naiterui.ehp.bp.utils.payment.bo;

import java.io.Serializable;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

/**
 * PHP调用患者系统生成预支付信息
 *
 * @author 王泽浩
 * @since 2.8
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@SuppressWarnings({"unused", "WeakerAccess"})
@JsonIgnoreProperties(ignoreUnknown = true)
@ApiModel(value = "UnifiedOrderResult", description = "微信预支付信息")
public class UnifiedOrderResultBO implements Serializable {

    private static final long serialVersionUID = -6541558399904328352L;

    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String codeUrl;

    /**
     * 公众号名称，由商户传入
     */
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @ApiModelProperty(value = "公众号名称，由商户传入")
    private String appId;

    /**
     * 时间戳，自 1970 年以来的秒数
     */
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @ApiModelProperty(value = "时间戳，自 1970 年以来的秒数")
    private String timeStamp;

    /**
     * 随机串
     */
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @ApiModelProperty(value = "随机串")
    private String nonceStr;

    /**
     * package
     */
    @JsonProperty("package")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @ApiModelProperty(value = "package")
    private String packageStr;

    /**
     * 微信签名方式
     */
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @ApiModelProperty(value = "微信签名方式")
    private String signType;

    /**
     * 微信签名
     */
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @ApiModelProperty(value = "微信签名")
    private String paySign;

    @JsonInclude(JsonInclude.Include.NON_NULL)
    @ApiModelProperty(value = "APP预支付ID")
    private String prepayId;

    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String partnerId;

    /**
     * 订单号
     */
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @ApiModelProperty(value = "订单号")
    private String orderSn;

    /**
     * 订单支付状态
     */
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @ApiModelProperty(value = "订单支付状态")
    private Integer payStatus;

    /**
     * 支付流水号
     */
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @ApiModelProperty(value = "支付流水号")
    private String tradeSn;

}
